package Future设计模式;

import java.util.concurrent.*;

public class FutureDemo {
    static class RealDate implements Callable<Integer> {

        @Override
        public Integer call() throws Exception {
            Thread.sleep(2000);// 模拟耗时任务
            return 1;
        }
    }

    public static void main(String[] args) throws InterruptedException, ExecutionException {
        FutureTask<Integer> task = new FutureTask<>(new RealDate());
        ExecutorService service = Executors.newFixedThreadPool(1);
        service.submit(task);


//      在这2s的时间里，主线程可以做其他事情。或者2s以后的某个时间段再过来取结果
        while (!task.isDone()){
            System.out.println("任务还没完成");
        }
        long s = System.currentTimeMillis();
        System.out.println("结果出来了： " + task.get());
        long end = System.currentTimeMillis();
        System.out.println((end - s) / 1000);// 2s
    }
    //任务还没完成
    //...
    //任务还没完成
    //结果出来了： 1
    //0
}
